Type: concept
Confidence: 0.85
Created: 2026-04-18
Updated: 2026-04-18
Tags: e2e-testingverificationagent-patternralph-loopAgent系统

E2E 验证模式

概述

E2E 验证模式是一组面向 Agent 开发循环的外部运行时验证方法,核心原则是"外部验证,不信任自评估"——LLM 在查看自己写的代码时极易产生确认偏误,唯一可靠的验证是启动真实运行时、执行真实操作、验证真实结果。

关键内容

  1. 核心原则:外部验证,不信任自评估
  2. ❌ 错误:让 Agent 阅读自己写的代码并判断"应该能用"
  3. ✅ 正确:启动真实浏览器/服务器,执行真实操作,验证真实结果
  4. LLM 极容易在查看自己写的代码时产生确认偏误,必须通过外部运行时验证打破这一循环

  5. 模式一:浏览器自动化验证(Dev-Browser Skill / Puppeteer MCP

  6. 最重要的验证手段,适用于所有前端 UI Story
  7. CLAUDE.md 中声明 Skill,引导 Agent 使用 dev-browser 或 Puppeteer MCP
  8. 标准流程:打开 localhost:3000 → 模拟用户操作(点击、输入、提交)→ 截图检查 → 验证 acceptanceCriteria
  9. Puppeteer MCP 工具链:puppeteer_navigatepuppeteer_screenshotpuppeteer_fillpuppeteer_clickpuppeteer_evaluate

  10. 模式一替代方案:Playwright 独立脚本验证

  11. 使用 Python Playwright async API 编写独立验证脚本(如 scripts/verify-story.py
  12. 按 story-id 索引测试函数,支持单 Story 验证
  13. 验证失败时自动保存截图(debug-{story_id}.png)辅助调试
  14. 输出标准化结果:RESULT: PASSRESULT: FAIL — {error}

  15. 模式二:API 测试(curl 脚本链)

  16. 对于 API Story,使用 curl 链验证(如 scripts/verify-api.sh
  17. 支持认证流程:先登录获取 token,再用 Bearer token 请求受保护端点
  18. 响应验证:用 Python 一行脚本解析 JSON 并断言关键字段(如 assert 'token' in d
  19. 环境变量支持:BASE_URL配置,适配不同环境

  20. 模式三:自动测试套件集成

  21. AGENTS.md 中记录测试命令,Agent 每次迭代后运行
  22. 全量测试(迭代结束前):npm testpytest -vgo test ./... -vcargo test
  23. 单文件测试(开发过程中):针对特定测试文件运行
  24. 关键约束:完成 Story 后运行相关测试;破坏已有测试必须提交前修复;2 次尝试内无法修复则 git revert

  25. 模式四:截图回归测试(Screenshot-Based Regression)

  26. 保存截图作为回归基准,路径约定:screenshots/[story-id]-[step].png
  27. 命名规范:auth-001-register-form.pngauth-001-dashboard.png
  28. 用途:调试 + 未来回归对比
  29. 清理策略:每次 PR 合并后清理 screenshots/ 目录

  30. 验证失败处理树

  31. 功能实现问题 → Attempt 2 修复 → 重新验证 → 2 次都失败 → git revert + 记录 BLOCKED + 下一个 Story
  32. 环境问题(数据库连接失败、端口占用等)→ 修复环境 → bash init.sh → 重新验证
  33. 测试脚本问题(测试本身有 bug)→ 修复测试脚本 → 记录到 AGENTS.md → 重新验证

  34. 验证命令速查表

  35. 前端 Story:puppeteer_navigate + puppeteer_fill + puppeteer_click + puppeteer_screenshot
  36. API Story:curl -X POST/GET/PUT/DELETE ... | python3 -c "import json,sys; ..."
  37. 数据库验证:Python 直接查询 session 计数
  38. 完整测试套件:npm test -- --passWithNoTests 2>&1 | tail -20
  39. 服务器健康检查:curl -s http://localhost:3000 -o /dev/null -w "%{http_code}"(期望 200)

来源

相关